
#ifndef __MACROS_H_
#define __MACROS_H_

#if defined(DEBUG) || defined (_DEBUG)
  #define APP_DEBUG
#endif

// macro to make assertions.
// an assertion is a condition that if false triggers a break-point
// assertions shouldn't be triggered so they exists only on debug code
#ifdef APP_DEBUG
	#ifdef _MSC_VER
		#include <stdio.h>
		#define Assert(x) { if(!(x)){printf("Assert "__FILE__ ":%u ("#x")\n", __LINE__);__debugbreak();	}}
	#else//_MSC_VER
		#include <assert.h>
		#define Assert assert
	#endif//_MSC_VER
#else // release build
		#define Assert(x)
#endif

#endif